package ottawa.testing.dao;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import ottawa.testing.bean.Provincia;

public class ProvinciaDAOHibernate 
	implements ProvinciaDAO
{
	
	private Session session = null;
	
	public ProvinciaDAOHibernate(Session session)
	{
		this.session = session;
	}
	
	@Override
	public List<Provincia> listarProvincia() 
	{		
		List<Provincia> listadoProvincia = null;
		
			try
			{				
				listadoProvincia = this.session
									.createQuery("SELECT P FROM Provincia AS P")
									.list();
			}
			catch ( HibernateException ex )
			{
				throw ( ex );
			}
		
		return listadoProvincia;
	}

	@Override
	public void salvarProvincia(Provincia provincia) 
	{
		try
		{			
			this.session.save(provincia);			
		}
		catch ( HibernateException ex )
		{
			throw ( ex );
		}		
	}
	
	public void salvarProvinciaMasivo(Collection<Provincia> provincias)
	{
		try
		{
			if ( provincias != null  )
			{
				int totalColeccionProvincias = provincias.size();
				if ( totalColeccionProvincias > 0 )
				{
					
					Iterator<Provincia> iteratorProvincia = provincias.iterator();					
					while ( iteratorProvincia.hasNext() )
					{
						Provincia provincia = iteratorProvincia.next();
						this.session.save(provincia);
					}					
					
				}
			}
			
		}
		catch ( HibernateException ex )
		{
			throw ( ex );
		}	
	}
	
}
